Práctica 3: Estadísticas Descriptivas para Rendimientos. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ En esta sección se aplicarán las estadísticas descriptivas y conceptos básicos que se están estudiando. Además, se estudirá la diferencia entre rendimientos contínuos y discretos. **Estadísticas para los precios de las acciones:** Para comenzar, se llama la libería ``fBasics`` Luego, se cargan los datos de las acciones con la función ``read.csv()``, en un objeto llamado ``datos=`` tal como se vió en la sección anterior `Conceptos Previos: Introducción a R y R-Studio `__. El archivo con el cual se trabajó se encuentra en `aquí `__. y se define el objeto ``precios =`` como una serie de tiempo con la función ``ts()`` aplicada a ``datos`` para las columnas 2 a la 5, las cuales contienen las acciones, ya que en el archivo la columna 1 solo es una columna de numeración. Se muestra los 5 primeros registros de ``precios`` con la función ``head``. .. code:: r library('fBasics') .. code:: r datos= read.csv(file.choose(), header=TRUE, sep =';', dec=",") .. code:: r precios= ts(datos[,2:5]) .. code:: r print(head(precios,5)) .. parsed-literal:: WMT.Adjusted PG.Adjusted NFLX.Adjusted KO.Adjusted [1,] 95.04511 96.73402 359.97 47.71631 [2,] 95.99585 96.71452 351.77 47.84123 [3,] 96.56432 95.95438 359.07 43.80561 [4,] 98.00515 95.97388 356.87 43.46932 [5,] 100.17127 97.44544 361.92 43.07536 **Histograma:** Se realiza el histograma de los precios de la acción 1 que para este caso particular pertenece a Walmart. Aqui se usa la función ``hist()`` sobre el objeto ``precios[,1]`` en la posición 1 (WMT), se le aplican los argumentos:título del gráfico “histograma Precios WMT” (``main = "histograma Precios WMT"``), color en azul (``col='blue'``), bordes en negro (``border='black'``), etiqueta del eje X en USD (``xlab= USD``) y tamaño del eje Y (``ylim = c(0,50)``) .. code:: r hist(precios[,1], main = "histograma Precios WMT", col = 'blue', border = 'black', xlab = 'USD',ylim = c(0,50)) .. image:: output_6_0.png :width: 420px :height: 420px Con el fin de graficar los histogrmas con diferentes colores, se hace uso de la librería ``qualiPalette()`` para crear una paleta de n colores dentro de la gama *Dark2* , los cuales están determinados por el número de acciones que contenga el objeto ``precios``. .. code:: r colores= qualiPalette(n=ncol(precios), name=c("Dark2")) **Preparación de la ventana de gráficos.** Con el fin de crear una ventana, que coloque los histogramas de los precios en una matríz gráfica de 4x2, se crean el objeto ``tamano=c(seq(ncol(cartera)))``, el cual crea una secuencia de 1 hasta el número total de acciones con el que cuenta el objeto ``precios``, y luego con el objeto ``matriz`` se crea la matriz gráfica. Con la ayuda de un ciclo ``for`` se crean los histogramas para cada una de las acciones pertenecientes a ``precios`` .. code:: r win.graph(15,13) tamano=c(seq(ncol(precios))) matriz=matrix(tamano, ncol=2) C=layout(matriz) #layout.show(C) opcional para Rstudio en consola. for (i in 1:ncol(precios)){ hist(precios[,i], breaks=40, col=colores[i], xlab="Precios", ylab ="Frecuencia", main = names(precios[,i]), freq=F) } .. image:: output_10_0.png :width: 420px :height: 420px **Estadísticas Descriptivas:** Con el fin de obtener un resumen general de las estadísticas principales como media, mediana, mínimo, máximo y cuartiles, se utiliza la función ``summary()`` sobre ``precios``, para todas las acciones. .. code:: r #estadísticas descriptivos= summary(precios) print(descriptivos) .. parsed-literal:: WMT.Adjusted PG.Adjusted NFLX.Adjusted KO.Adjusted Min. : 95.05 Min. : 95.91 Min. :254.6 Min. :42.94 1st Qu.:101.39 1st Qu.:104.12 1st Qu.:299.1 1st Qu.:47.64 Median :113.30 Median :116.09 Median :343.3 Median :52.18 Mean :110.27 Mean :113.76 Mean :333.5 Mean :51.13 3rd Qu.:117.51 3rd Qu.:121.93 3rd Qu.:362.8 3rd Qu.:53.73 Max. :121.28 Max. :127.14 Max. :387.8 Max. :59.61 Con la función ``range()`` se puede obtener el rango en el que se mueve el precio de una acción, en este caso la acción ubicada en la posición 3 (``precios[,3]``) NFLX.Adjusted que irá desde el mín= 254.6 a max= 387.8, esta información se observa igualmente en el recuadro anterior de las estadísticas resumen. .. code:: r rango= range(precios[,3]) print(rango) .. parsed-literal:: [1] 254.59 387.78 La varianza de una acción se puede hallar con la función ``var()``. .. code:: r #Matriz de varianzas varianza= var(precios[ ,3]) print(varianza) .. parsed-literal:: [1] 1227.86 Asimismo, la desviación estandar de una acción se puede hallar con la función ``sd()``. .. code:: r sigma=sd(precios[ ,3]) print(sigma) .. parsed-literal:: [1] 35.04084 La asimetría o sesgo, se puede hallar con la función ``skewness()``, pero hay que aclarar que esta función no se encuentra dentro de los paquetes básicos de R, por tanto, siempre antes de utilizar esta función, se debe instalar el paquete ``'fBasics'``. .. code:: r asimetria= skewness(precios[,3]) print(asimetria) .. parsed-literal:: [1] -0.3791279 attr(,"method") [1] "moment" Igualmente con la función ``kurtosis()`` se debe tener instalado la librería ``'fBasics'`` .. code:: r curtosis= kurtosis(precios[ ,3]) print(curtosis) .. parsed-literal:: [1] -1.177376 attr(,"method") [1] "excess" Los cuantiles o percentiles del precio de una acción o de cualquier variable, se pueden calcular con la función ``quantile()``, lo importante es indicar el percentil que se desea hallar, para ello, se utiliza el argumento ``prob = c()``, en donde se colocará el valor de los perncentiles entre 0 y 1. .. code:: r Q=quantile(precios[3], prob = c(0.25, 0.5, 0.75), na.rm = TRUE) print(Q) .. parsed-literal:: 25% 50% 75% 96.56432 96.56432 96.56432 **Rendimientos:** Los rendimientos calculados en esta sección, son basados en las distribuciones continuas por lo que se utilizan los rendimientos logarítmicos, determinados por la fórmula: .. math:: Rdto = ln(Vf/Vi) La funciones ``diff()`` y ``log()`` aplicadas de forma anidada sobre el objeto ``precios``, producen la matriz de rendimientos continuos, que se observa a continuación. Para comprender el uso de los rendimientos logarítmicos ver el vídeo explicativo: `Rendimientos discreto vs continuos `__. .. code:: r Rdtos=diff(log(precios)) print(head(Rdtos,5)) .. parsed-literal:: WMT.Adjusted PG.Adjusted NFLX.Adjusted KO.Adjusted [1,] 0.009953393 -0.0002015316 -0.023043176 0.002614405 [2,] 0.005904385 -0.0078906655 0.020539853 -0.088125733 [3,] 0.014810682 0.0002031280 -0.006145819 -0.007706627 [4,] 0.021861413 0.0152165405 0.014051673 -0.009104239 [5,] -0.022962154 -0.0071259700 -0.005569218 0.006004729 A modo de ejemplo, aquí se crean los histogramas para los rendimientos de las acciones, de forma similar a la ya vista. .. code:: r win.graph(15,13) tamano=c(seq(ncol(Rdtos))) matriz=matrix(tamano, ncol=2) C=layout(matriz) #layout.show(C) opcional para Rstudio en consola. for (i in 1:ncol(Rdtos)){ hist(Rdtos[,i], breaks=40, col=colores[i], xlab="Rendimientos", ylab ="Frecuencia", main = names(Rdtos[,i]), freq=F) } .. image:: output_28_0.png :width: 420px :height: 420px con el objetivo de obtener una matriz que reúna los coeficientes de curtosis y asimetría en una sola tabla se hace uso de un ciclo ``For{}``, ya que estas funciones por si solas solo se aplican a los activos individuales. .. code:: r asimetria=vector() curtosis=vector() for (i in 1:ncol(Rdtos)) { asimetria[i]= skewness(Rdtos[,i]) curtosis[i]= kurtosis(Rdtos[ ,i]) } matriz=cbind(asimetria, curtosis) print(matriz) .. parsed-literal:: asimetria curtosis [1,] 0.02079609 17.580065 [2,] 0.02442168 15.601142 [3,] -0.94786033 4.384105 [4,] -2.06507309 14.358641 **Práctica:** Con las acciones que descargaron y manipularon en las `Prácticas 1y 2 `__, saque los rendimientos logarítmicos de las acciones que eligió y responda lo siguiente: **1.** Los histogrmas muestran un comportamiento platicúrtico, mesocúrtico o leptocúrtico. **2.** Concluya sobre las estadísticas descriptivas básicas de los rendimientos (summary). **3.** Confirme por medio de los coeficientes de asimetría y curtosis, si los rendimientos de sus acciones contienen colas pesadas (sesgo) o estan demasiado centradas(curtosis altas)